home *** CD-ROM | disk | FTP | other *** search
- /*
- File: ShapeScripting.c
-
- Copyright 1996, Adobe Systems Incorporated.
- All rights reserved.
-
- C source file for scripting functions for Shape example.
- */
-
- #include "Shape.h"
-
- /*****************************************************************************/
-
- /* Checks the parameters against scripting-returned parameters, if any, and
- updates our parameters to match ones given to us by the scripting system. */
-
- Boolean ReadScriptParams (GPtr globals)
- {
- PIReadDescriptor token = NULL;
- DescriptorKeyID key = NULLID;
- DescriptorTypeID type = NULLID;
- OSType x = typeNull;
- DescriptorKeyIDArray array = { keyShape, keyCreate, NULLID };
- int32 flags = 0;
- OSErr stickyError = noErr;
- Boolean returnValue = true;
-
- if (DescriptorAvailable())
- { /* playing back. Do our thing. */
- token = OpenReader(array);
- if (token)
- {
- while (PIGetKey(token, &key, &type, &flags))
- {
- switch (key)
- {
- case keyShape:
- PIGetEnum(token, &x);
- gWhatShape = KeyToEnum(x, typeShape);
- break;
- case keyCreate:
- PIGetEnum(token, &x);
- gCreate = KeyToEnum(x, typeCreate);
- break;
- }
- }
-
- stickyError = CloseReader(&token); // closes & disposes.
-
- if (stickyError)
- {
- if (stickyError == errMissingParameter) // missedParamErr == -1715
- ;
- /* (descriptorKeyIDArray != NULL)
- missing parameter somewhere. Walk IDarray to find which one. */
- else
- gResult = stickyError;
- }
- }
-
- returnValue = PlayDialog();
- /* return TRUE if want to show our Dialog */
- }
-
- return returnValue;
- }
-
- /*****************************************************************************/
-
- /* Writes our parameters to the scripting system. */
-
- OSErr WriteScriptParams (GPtr globals)
- {
- PIWriteDescriptor token = nil;
- OSErr gotErr = noErr;
-
- if (DescriptorAvailable())
- { /* recording. Do our thing. */
- token = OpenWriter();
- if (token)
- {
- PIPutEnum(token,
- keyShape,
- typeShape,
- EnumToKey(gWhatShape, typeShape));
- PIPutEnum(token,
- keyCreate,
- typeCreate,
- EnumToKey(gCreate, typeCreate));
- gotErr = CloseWriter(&token); /* closes and sets dialog optional */
- /* done. Now pass handle on to Photoshop */
- }
- }
- return gotErr;
- }
-
- /*****************************************************************************/
- /* Takes the property units and returns a corresponding enumerated number */
-
- short KeyToEnum (OSType key, OSType whatType)
-
- {
- switch (whatType)
- {
- case typeShape:
- switch (key)
- {
- case shapeTriangle:
- return iShapeTriangle;
- break;
- case shapeSquare:
- return iShapeSquare;
- break;
- case shapeCircle:
- return iShapeCircle;
- break;
- case shapeStar:
- return iShapeStar;
- break;
- case shapeTreble:
- return iShapeTreble;
- break;
- case shapeRibbon:
- return iShapeRibbon;
- break;
- case shapeNote:
- return iShapeNote;
- break;
- }
- break;
- case typeCreate:
- switch (key)
- {
- case createSelection:
- return iCreateSelection;
- break;
- case createMaskpath:
- return iCreateMaskpath;
- break;
- case createLayer:
- return iCreateLayer;
- break;
- }
- break;
- case typePISel:
- switch (key)
- {
- case createSelection:
- return piSelMakeMask;
- break;
- case createMaskpath:
- return piSelMakeWorkPath;
- break;
- case createLayer:
- return piSelMakeLayer;
- break;
- }
- break;
- }
- }
-
- /*****************************************************************************/
- /* Takes the property enumeration and returns the corresponding key */
-
- OSType EnumToKey (short keyEnum, OSType whatType)
-
- {
- switch (whatType)
- {
- case typeShape:
- switch (keyEnum)
- {
- case iShapeTriangle:
- return shapeTriangle;
- break;
- case iShapeSquare:
- return shapeSquare;
- break;
- case iShapeCircle:
- return shapeCircle;
- break;
- case iShapeStar:
- return shapeStar;
- break;
- case iShapeTreble:
- return shapeTreble;
- break;
- case iShapeRibbon:
- return shapeRibbon;
- break;
- case iShapeNote:
- return shapeNote;
- break;
- }
- break;
- case typeCreate:
- switch (keyEnum)
- {
- case iCreateSelection:
- return createSelection;
- break;
- case iCreateMaskpath:
- return createMaskpath;
- break;
- case iCreateLayer:
- return createLayer;
- break;
- }
- break;
- }
- }